Introduction à R

Statistique descriptive univariée et bivariée

Hugues Pecout (FR CIST, CNRS)

Timothée Giraud (UMS RIATE, CNRS)

featured



DIAPORAMA D’INTRODUCTION :

Contextualisation et présentation de R et Rstudio


Diaporama bonus (équivalent “Quelques fondamentaux”) : Base du langage, packages, Rstudio et documentation


1 Quelques fondamentaux


1.1 L’interface Rstudio

L’interface de RStudio se présente sous la forme d’une unique fenêtre découpée en quatre zones que l’on peut redimensionner, masquer ou maximiser selon ses préférences :

  • L’éditeur de code
  • Cette zone permet l’édition de fichiers source R (avec coloration syntaxique et autocomplétion).

  • La console
  • La console avec la session R en cours d’exécution. La console affiche à la fois le code exécuté, ses résultats associés, ainsi que les avertissements (warnings) et messages d’erreur éventuels (errors).

  • L’espace de travail
  • Cette zone permet de lister, typer et visualiser les objets créés par l’exécution du code R.

  • Une quatrième zone pemettant de basculer entre :
  • Un explorateur de fichiers, une fenêtre graphique, une fenêtre de gestion des packages et de la documentation associée aux fonctions et packages.


    RStudio propose de nombreuses fonctionnalités intéressantes, par exemple :

    • La création de projet
    • RStudio dispose d’une fonctionnalité très pratique pour organiser son travail en différents projets. L’idée principale est de réunir tous les fichiers et documents relatifs à un même projet (que ce soit les données, les scripts, les rapports automatisés…) dans un répertoire dédié. L’onglet Projects est situé en haut à droite de l’interface.

    • Les boutons raccourcis
    • Plusieurs actions comme la création et le chargement de programme, l’import de données, l’installation et le chargement de packages, l’accés à la documentation, la visualisation des objets, l’export de figures… sont exécutables en un simple clic.

    • L’autocomplétion
    • RStudio présente aussi la capacité de compléter automatiquement les termes en cours d’écriture. L’autocomplétion fonctionne avec la touche Tab du clavier. Cela aide l’utilisateur dans la saisi des noms d’objet, de fonction, de variable, et même des arguments de fonction.

    • Raccourcis clavier
    • RStudio propose de nombreux raccourcis clavier intéressants, exemple :

      • Alt + - renvoie l’opérateur d’assignation accompagné d’un espace avant et un espace après (<-)
      • Ctrl + Entrée exécute le code écrit dans la fenêtre d’édition (script)
      • Ctrl + 1 et Ctrl + 2 permettent de passer de la console à l’éditeur de code et vice versa
      • shift+alt+k pour accéder à l’ensemble des raccourcis.


    1.2 Paramètres généraux

    Pour éviter des problèmes d’encodage des scripts ou le chargement incessant de données à chaque nouvelle instance de Rstudio, il est necessaire de modifier certains paramètres globaux. Pour cela, cliquez sur “tools” puis sur “Global Options” pour ouvrir la fenêtre des paramètre généraux de Rstudio.

    Dans un premier temps, décochez les options de restoration et de sauvegarde de données à l’ouverture et à la fermeture de session :


    Puis, dans l’onglet “code” et le sous-onglet “saving”, paramétrez l’encodage en UTF-8 pour que les scripts crées s’affichent correctement en cas d’ouverture dans un autres systèmes d’exploitation :


    1.3 Les projets

    Cette fonctionnalité permet d’organiser son travail en différents projets. L’idée principale est de réunir tous les fichiers relatifs à un même projet (quelque soit leur format) dans un répertoire dédié. Le menuProjectest accessible via une icône dédiée située tout en haut à droite :



    Dans le menu “Project”, sélectionnez l’option “New project” :



    Dans un nouveau répertoire, créez un projet vide. Indiquez le nom de votre projet, qui sera également le nom du répertoire créé pour stocker les données du projet. Puis, indiquez le répertoire parent, dans lequel votre projet sera créé :



    1.4 Les objets

    Tout ce qui est créé et manipulé sous R est un objet. Ces objets permettent de stocker et de structurer les données. Les objets peuvent stocker différents types de données. Voici les principaux :

    • La chaine de caractères (string)

    Il s’agit d’une suite ordonnée de caractères. Ex : “Ma chaîne de caractères” ou “234

    • Nombre entier (integer)

    Il s’agit d’un nombre sans décimale (sans virgule). Ex : 347

    • Nombre réel (numeric)

    Il s’agit d’un nombre décimale. Ex : 86.6

    • Valeur logique ou booléenne (logical)

    Une variable booléenne est une variable qui ne prend que deux valeurs : true (vrai) et false (faux) ou 0 et 1


    1.4.1 Créer un objet

    Un objet peut être créé avec l’opérateur « assigner » (<-), une flèche composée du signe inférieur (<) accolé à un tiret (-). Si l’objet existe déjà, sa valeur précédente est remplacée par la nouvelle. La valeur renvoyée peut être le résultat d’une opération et/ou d’une fonction :

    ## [1] "chaîne de caractères"
    ## [1] 24

    On peut également écrire une expression sans assigner son résultat ou sa valeur à un objet, le résultat est alors affiché à l’écran mais n’est pas stocké dans un objet en mémoire :

    ## [1] 60


    1.4.2 La fonction

    Le logiciel R dispose de fonctions préprogrammées appelées fonctions primitives ou basiques et regroupés dans le package base qui est automatiquement chargé. Pour connaître toutes les fonctions primitives, utilisez la fonction library(help = “base”) :

    Pour utiliser une fonction, il suffit d’écrire son nom, puis de spécifier des arguments entre parenthése.

    Exemple de fonctions permettant d’assigner ou de modifier la classe d’un objet :

    ## [1] "character"
    ## [1] "numeric"

    Une fonction est paramétrable, ajustable à l’aide d’arguments. Trés souvent, les arguments d’une fonction sont prédéfinis. Il est donc important de se renseigner sur les différents arguments d’une fonction et ses valeurs paramétrées par défault. Cependant, certains arguments n’ont pas toujours de valeur prédéfinie et doivent être renseignés.

    Exemple avec la fonction mean() :

    ## [1] NA

    La fonction mean() retourne NA car la série statistique présente une valeur manquante (NA). L’arguments na.rm (= FALSE par défault) permet de ne pas prendre en compte les valeurs manquantes :

    ## [1] 13.36364

    L’utilisateur a également la possibilité de définir ses propres fonctions. Une fonction est mise dans une variable contenant un bloc d’instructions introduit par la commande function(). La syntaxe générale est :

    Exemple :

    ## function(x) {
      ##   y <- x*x
      ##   return(y)
      ## }
    ## [1] 9

    En plus des fonction primitives, des fonctions que vous pouvez vous même créer, il est trés simple d’utiliser des fonctions mises à disposition par l’intermédiaire de package. Pour cela, vous devez d’abord installer le package et chargez la library :


    1.4.4 Le data frame

    Un data frame est utilisé pour stocker une table de données. Il s’agit d’une liste de vecteurs de même longueur.

    ##     personne salaire       date
      ## 1   John Doe   21000 2010-11-01
      ## 2 Peter Gynn   23400 2008-03-25
      ## 3 Jolie Hope   26800 2007-03-14
      ## 4  John snow   32700 1678-01-23
    ##     personne salaire       date New_col_1 New_col_2
      ## 1   John Doe   21000 2010-11-01 mon_texte         1
      ## 2 Peter Gynn   23400 2008-03-25 mon_texte         2
      ## 3 Jolie Hope   26800 2007-03-14 mon_texte         3
      ## 4  John snow   32700 1678-01-23 mon_texte         4
    ##     personne salaire       date New_col_1 New_col_2
      ## 2 Peter Gynn   23400 2008-03-25 mon_texte         2
    ##     personne       date
      ## 1   John Doe 2010-11-01
      ## 2 Peter Gynn 2008-03-25
      ## 3 Jolie Hope 2007-03-14
      ## 4  John snow 1678-01-23
    ## [1] "John Doe"   "Peter Gynn" "Jolie Hope" "John snow"
    ## [1] "John snow"
    ## [1] "John snow"


    1.4.5 La liste

    Une liste est un vecteur d’objets. Il permet de stocker différents types d’objets dans un seul objet.

    ## [[1]]
      ## function() {cat("hello")}
      ## 
      ## [[2]]
      ## [1] "John Doe"   "Peter Gynn" "Jolie Hope" "John snow" 
      ## 
      ## [[3]]
      ## [1] "2010-11-01" "2008-03-25" "2007-03-14" "1678-01-23"
      ## 
      ## [[4]]
      ##   mon_vecteur1 mon_vecteur2
      ## 1     John Doe   2010-11-01
      ## 2   Peter Gynn   2008-03-25
      ## 3   Jolie Hope   2007-03-14
      ## 4    John snow   1678-01-23
    ## [[1]]
      ## [1] "J'ajoute un objet à ma liste"
    ## [[1]]
      ## [1] "John Doe"   "Peter Gynn" "Jolie Hope" "John snow" 
      ## 
      ## [[2]]
      ## [1] "2010-11-01" "2008-03-25" "2007-03-14" "1678-01-23"
    ## [[1]]
      ## [1] "John Doe"   "Peter Gynn" "Jolie Hope" "John snow" 
      ## 
      ## [[2]]
      ## [1] "2010-11-01" "2008-03-25" "2007-03-14" "1678-01-23"
      ## 
      ## [[3]]
      ## [1] "J'ajoute un objet à ma liste"
    ## [1] "2008-03-25"


    1.4.6 La matrice

    Une matrice est un tableau d’objet de même type, à double entrée.

    ## [1] 12

    De nombreuses opérations et fonctions primitives sont applicables à cet objet. Quelques exemples :

    ##      [,1] [,2] [,3] [,4]
      ## [1,]    1   25   81  169
      ## [2,]    4   36  100  196
      ## [3,]    9   49  121  225
      ## [4,]   16   64  144  256
    ##      [,1] [,2] [,3] [,4]
      ## [1,]    1    2    3    4
      ## [2,]    5    6    7    8
      ## [3,]    9   10   11   12
      ## [4,]   13   14   15   16
    ## [1]  1  6 11 16
    ## [1]  7  8  9 10
    ## [1] 10 26 42 58


    1.4.7 Le Simple Feature data frame

    L’objet sf est en quelque sorte une table de données géographique. Il permet de gérer de l’information spatiale. Il s’agit tout simplement d’un dataframe qui stocke également des geométries.

    ## Simple feature collection with 10 features and 2 fields
      ## Attribute-geometry relationship: 2 constant, 0 aggregate, 0 identity
      ## Geometry type: POINT
      ## Dimension:     XY
      ## Bounding box:  xmin: 2.299024 ymin: 48.83349 xmax: 2.37115 ymax: 48.88334
      ## CRS:           EPSG:4326
      ##    ID name                  geometry
      ## 1   1    a POINT (2.331454 48.84905)
      ## 2   2    b POINT (2.347332 48.85217)
      ## 3   3    c POINT (2.318518 48.83349)
      ## 4   4    d  POINT (2.37115 48.86528)
      ## 5   5    e POINT (2.356515 48.86409)
      ## 6   6    f POINT (2.299024 48.85176)
      ## 7   7    g POINT (2.358712 48.85207)
      ## 8   8    h POINT (2.333936 48.88334)
      ## 9   9    i POINT (2.352751 48.85758)
      ## 10 10    j POINT (2.343179 48.87391)
    ##  [1]  1  2  3  4  5  6  7  8  9 10
    ## [1] "c"
    ## Geometry set for 1 feature 
      ## Geometry type: POINT
      ## Dimension:     XY
      ## Bounding box:  xmin: 2.318518 ymin: 48.83349 xmax: 2.318518 ymax: 48.83349
      ## CRS:           EPSG:4326


    1.4.8 Le facteur

    Un facteur (factor) est un vecteur contenant uniquement certaines valeurs prédéfinies. Les valeurs pré-définies sont appelées des levels.

    ##  [1] "South" "South" "South" "West"  "West"  "East"  "South" "South" "West" 
      ## [10] "South" "East"  "East"  "West"
    ## [1] "character"
    ##  Factor w/ 3 levels "East","South",..: 2 2 2 3 3 1 2 2 3 2 ...
    ## [1] "East"  "South" "West"
    ##  East South  West 
      ##     3     6     4
    ## [1] South
      ## Levels: East South West
    ## [1] South South West  South East  East  West 
      ## Levels: East South West


    1.5 Les opérateurs

    1.5.1 Arithémtiques

    ## [1] 10
    ## [1] 0
    ## [1] 1
    ## [1] 25
    ## [1] 3125


    1.5.3 Logique

    ##                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
      ## Duster 360       14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
      ## Merc 230         22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
      ## Pontiac Firebird 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
    ##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
      ## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
      ## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
      ## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
      ## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
      ## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
      ## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
      ## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
      ## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
      ## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
      ## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
      ## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
      ## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
      ## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
      ## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
      ## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
      ## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
      ## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
      ## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
      ## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
      ## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
      ## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
      ## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
      ## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
      ## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
      ## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
      ## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
      ## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
      ## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
      ## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
      ## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
      ## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
      ## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
    ##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
      ## [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
      ## [31] TRUE TRUE


    1.6 Les packages

    R fourni directement un important nombre de fonctions pré-installées, stockées dans ce qui est appelé le R Base Package. Il n’est pas nécessaire de les installer ou de les charger, elles sont imédiatement utilisables. À ce jour, 2292 fonctions sont proposées par le le R-base.

    Les fonctions du r-base permettent d’effectuer les manipulations de données les plus classiques. Pour effectuer des traitements plus spécifiques, il est nécessaire d’installer des packages mise à disposition par d’autres utilisateurs sur le CRAN.
    Les packages sont des collections de fonctions, associées à de la documentation et parfois même à des données. 18095 packages supplémentaires étaient mis à disposition le 31 août 2021 sur le CRAN. Tous les packages disponibles sur The Comprehensive R Archive Network ont été controlés. Leur fonctionnement technique (uniquement) est garanti, car il s’agit d’un depôt officiel de packages.

    Il est également possible d’installer des packages en cours de développement et mise à disposition sur un GIT ou d’installer un package stocké en .tar.gz sur votre machine.

    Installer un package en language R :

    Une fois installé, un package doit être chargé à chaque nouvelle session de R pour être utilisé. A un package est systématiquement associée de la documentation permettant de comprendre son contenu et aider à sa prise en main.

    L’interface RStudio permet également l’installation et le chargement manuel des packages :


    1.7 Aide et documentation

    Il y a plusieurs façons d’obtenir de l’aide avec R studio. Vous pouvez utiliser l’onglet d’aide proposé par Rstudio et accéder à la documentation d’une fonction :

    Il est possible d’obtenir de la documentation en utilisant des fonctions, Ex :

    Exemple de la cheatsheet (antisèche) du package “cartography” :


    Ne négligez pas le service d’autocomplétion proposé par RStudio. C’est un véritable assistant de programmation. Il permet par exemple de s’assurer du bon orthographe d’un objet ou d’une fonction ou de connaître les différents arguments possibles d’une fonction. Pour cela il suffit d’utiliser la touche tab lors de la saisie. RStudio vous proposera alors les possibilités qui s’offrent à vous.

    Enfin, internet est une ressource documentaire trés riche pour R. Vous y trouverez toujours une réponse à vos questions, et presque toujours en français !


    1.8 Règles de codage

    Les règles de codage permettent d’écrire un code plus clair et plus lisible pour soi et pour les autres. Vous pourrez trouver plusieurs propositions de coding style car il n’existe pas de style officiel pour le logiciel R. Quelque soit le style choisi l’idée est de conserver le même tout au long d’un programme.
    Voir par exemple :

    Troix règles font tout de même l’unanimité :

    • Eviter les lignes de plus de 80 charactères.
    • Utiliser un espace avant et après les opérateurs :
    • Eviter les lignes avec plus d’une opération :


    L’intégration de commentaire dans le code est également une pratique appréciée. Pour cela, insérer un # en début de ligne.


    2 Prise en main

    Avant de commencer, créez un nouveau projet à l’emplacement de votre choix (cf. Les projets). Puis, téléchargez ces données, et décompressez l’archive à la racine de votre répertoire projet.

    Il s’agit de données sur la structure de la population des communes de la Martinique en 2011 et 2016 et d’une couche géographique associée.

    Source : INSEE - Recensement de population & IGN, BD ADMIN EXPRESS


    1. Chargez le fichier INSEE_COM_972.csv dans un objet.


    1. Visualisez et interrogez votre objet data frame, en ligne de code ET depuis l’interface RStudio.


    1. Corrigez la classe de données de certaines variables


    1. Séléctionnez les communes isolées hors influence des pôles (CATAEU2010 == 400) de plus de 2000 habitants en 2016 (P16_POP).


    1. Créez une nouvelle variable contenant la part de la population agée de 0 à 14 ans en 2016 (P16_POP0014 / P16_POP * 100)


    1. Chargez la couche géographique martinique.shp dans un objet.


    1. Réalisez une jointure entre la couche géographique et votre tableau de données

    Puis, appliquez la fonction plot() au résultat…


    2.1 Import/export de données

    Il est possible d’importer et d’exporter des données de différents formats. Pour cela, une série de fonctions (primitives ou non) peut être utilisées. Quelques exemples :

    Pour que l’import soit correct, il est souvent nécessaire de renseigner un certain nombre d’arguments, comme par exemple :

    header = valeur logique qui indique si la première ligne du fichier importé contient les noms des variables.
    sep = Indique le séparateur de champ du fichier.
    stringsAsFactor = Le données de type caractère sont transformées (par défaut) en facteur.
    Encoding = Indique l’encodage utilisé pour les chaînes de caractères.


    Il est possible de télécharger un fichier mis à disposition en ligne, avec la fonction :


    2.2 Interroger un objet

    Pour les exemples ci-dessous, l’objet dataframe mtcars est utilisé. Il s’agit d’un exemple de data frame, directement implanté dans R.

    ## 'data.frame':    32 obs. of  11 variables:
      ##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
      ##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
      ##  $ disp: num  160 160 108 258 360 ...
      ##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
      ##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
      ##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
      ##  $ qsec: num  16.5 17 18.6 19.4 17 ...
      ##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
      ##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
      ##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
      ##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
    ##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
      ## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
      ## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
      ## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
      ## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
      ## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
      ## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
    ##                 mpg cyl  disp  hp drat    wt qsec vs am gear carb
      ## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.7  0  1    5    2
      ## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.9  1  1    5    2
      ## Ford Pantera L 15.8   8 351.0 264 4.22 3.170 14.5  0  1    5    4
      ## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.5  0  1    5    6
      ## Maserati Bora  15.0   8 301.0 335 3.54 3.570 14.6  0  1    5    8
      ## Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.6  1  1    4    2
    ##       mpg             cyl             disp             hp       
      ##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
      ##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
      ##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
      ##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
      ##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
      ##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
      ##       drat             wt             qsec             vs        
      ##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
      ##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
      ##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
      ##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
      ##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
      ##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
      ##        am              gear            carb      
      ##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
      ##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
      ##  Median :0.0000   Median :4.000   Median :2.000  
      ##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
      ##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
      ##  Max.   :1.0000   Max.   :5.000   Max.   :8.000
    ## [1] "data.frame"
    ## [1] 11
    ##  [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear"
      ## [11] "carb"
    ##  [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear"
      ## [11] "carb"
    ##  [1] "Mazda RX4"           "Mazda RX4 Wag"       "Datsun 710"         
      ##  [4] "Hornet 4 Drive"      "Hornet Sportabout"   "Valiant"            
      ##  [7] "Duster 360"          "Merc 240D"           "Merc 230"           
      ## [10] "Merc 280"            "Merc 280C"           "Merc 450SE"         
      ## [13] "Merc 450SL"          "Merc 450SLC"         "Cadillac Fleetwood" 
      ## [16] "Lincoln Continental" "Chrysler Imperial"   "Fiat 128"           
      ## [19] "Honda Civic"         "Toyota Corolla"      "Toyota Corona"      
      ## [22] "Dodge Challenger"    "AMC Javelin"         "Camaro Z28"         
      ## [25] "Pontiac Firebird"    "Fiat X1-9"           "Porsche 914-2"      
      ## [28] "Lotus Europa"        "Ford Pantera L"      "Ferrari Dino"       
      ## [31] "Maserati Bora"       "Volvo 142E"
    ## [1] 32 11
    ## [1] 11
    ## [1] 32


    2.3 Séléction par attributs

    Comme pour toute les opérations dans R, il existe plusieurs solutions :

    ##            mpg cyl  disp hp drat   wt qsec
      ## Merc 240D 24.4   4 146.7 62 3.69 3.19 20.0
      ## Merc 230  22.8   4 140.8 95 3.92 3.15 22.9
    ##            mpg cyl  disp hp drat   wt qsec
      ## Merc 240D 24.4   4 146.7 62 3.69 3.19 20.0
      ## Merc 230  22.8   4 140.8 95 3.92 3.15 22.9
    ##            mpg cyl  disp hp drat   wt
      ## Merc 240D 24.4   4 146.7 62 3.69 3.19
      ## Merc 230  22.8   4 140.8 95 3.92 3.15


    2.5 Combiner

    ##   ID Prenom ID  Nom
      ## 1  1   John  1  Doe
      ## 2  2  Peter  2 Gynn
      ## 3  3  Jolie  3 Hope
      ## 4  4   John  4 snow
    ##   ID   Nom
      ## 1  1  John
      ## 2  2 Peter
      ## 3  3 Jolie
      ## 4  4  John
      ## 5  1   Doe
      ## 6  2  Gynn
      ## 7  3  Hope
      ## 8  4  snow


    2.6 Regroupement

    Ci-dessous, deux solutions de regroupement possibles, avec opération sur une variable :

    ##   cyl vs   disp
      ## 1   4  0  120.3
      ## 2   6  0  465.0
      ## 3   8  0 4943.4
      ## 4   4  1 1036.2
      ## 5   6  1  818.2
    ## # A tibble: 5 x 5
      ## # Groups:   cyl [3]
      ##     cyl    vs sum_disp moy_hp nb_element
      ##   <dbl> <dbl>    <dbl>  <dbl>      <int>
      ## 1     4     0     120.   91            1
      ## 2     4     1    1036.   81.8         10
      ## 3     6     0     465   132.           3
      ## 4     6     1     818.  115.           4
      ## 5     8     0    4943.  209.          14


    2.7 Manipulation de data frame

    ##   id time x1 x2
      ## 1  1    1  5  6
      ## 2  1    2  3  5
      ## 3  2    1  6  1
      ## 4  2    2  2  4
    ##      [,1] [,2] [,3] [,4]
      ## id      1    1    2    2
      ## time    1    2    1    2
      ## x1      5    3    6    2
      ## x2      6    5    1    4


    Le package reshape2 contient plusieurs fonctions de remodelage de data frame :

    ##   id time variable value
      ## 1  1    1       x1     5
      ## 2  1    2       x1     3
      ## 3  2    1       x1     6
      ## 4  2    2       x1     2
      ## 5  1    1       x2     6
      ## 6  1    2       x2     5
      ## 7  2    1       x2     1
      ## 8  2    2       x2     4
    ##   id x1  x2
      ## 1  1  4 5.5
      ## 2  2  4 2.5

    Il est aussi possible d’utiliser des fonctions du package tidyr, developpé par Rstudio.


    2.8 Trier des données

    ## [1] 1 2 3 4 5 6 7 9
    ##                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
      ## Merc 450SE       16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
      ## Merc 450SL       17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
      ## Merc 450SLC      15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
      ## Maserati Bora    15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
      ## AMC Javelin      15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
      ## Dodge Challenger 15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2


    2.9 Boucle itérative

    Une boucle est une série d’instructions exécutées jusqu’à ce qu’un résultat particulier soit obtenu ou qu’une condition pré-déterminée soit remplie. Les boucles permettent de ré-utiliser des séries d’instructions et permettent ainsi de limiter le nombre d’instructions.

    ## [1] "Passage n°1"
      ## [1] "Passage n°2"
      ## [1] "Passage n°3"
      ## [1] "Passage n°4"
      ## [1] "Passage n°5"


    2.10 Fonctions apply

    L’utilisation d’une boucle est très fréquente en traitement de données. Une boucle peut permettre d’effectuer des traitements sur des objets de structure multidimensionnelle (data frame, matrice, array, sf…). Mais pour cela, la boucle for n’est pas la technique otpimum. Les concepteurs de R ont développé des fonctions spécialement prévu à cet effet.

    ##           Mazda RX4       Mazda RX4 Wag          Datsun 710      Hornet 4 Drive 
      ##            29.90727            29.98136            23.59818            38.73955 
      ##   Hornet Sportabout             Valiant          Duster 360           Merc 240D 
      ##            53.66455            35.04909            59.72000            24.63455 
      ##            Merc 230            Merc 280           Merc 280C          Merc 450SE 
      ##            27.23364            31.86000            31.78727            46.43091 
      ##          Merc 450SL         Merc 450SLC  Cadillac Fleetwood Lincoln Continental 
      ##            46.50000            46.35000            66.23273            66.05855 
      ##   Chrysler Imperial            Fiat 128         Honda Civic      Toyota Corolla 
      ##            65.97227            19.44091            17.74227            18.81409 
      ##       Toyota Corona    Dodge Challenger         AMC Javelin          Camaro Z28 
      ##            24.88864            47.24091            46.00773            58.75273 
      ##    Pontiac Firebird           Fiat X1-9       Porsche 914-2        Lotus Europa 
      ##            57.37955            18.92864            24.77909            24.88027 
      ##      Ford Pantera L        Ferrari Dino       Maserati Bora          Volvo 142E 
      ##            60.97182            34.50818            63.15545            26.26273
    ##      mpg      cyl     disp       hp     drat       wt     qsec       vs 
      ##  642.900  198.000 7383.100 4694.000  115.090  102.952  571.160   14.000 
      ##       am     gear     carb 
      ##   13.000  118.000   90.000
    ##  [1] 0.210 0.210 0.228 0.214 0.187 0.181 0.143 0.244 0.228 0.192 0.178 0.164
      ## [13] 0.173 0.152 0.104 0.104 0.147 0.324 0.304 0.339 0.215 0.155 0.152 0.133
      ## [25] 0.192 0.273 0.260 0.304 0.158 0.197 0.150 0.214
    ## [[1]]
      ## [1] 0.21
      ## 
      ## [[2]]
      ## [1] 0.21
      ## 
      ## [[3]]
      ## [1] 0.228
      ## 
      ## [[4]]
      ## [1] 0.214
      ## 
      ## [[5]]
      ## [1] 0.187


    2.12 Gestion de chaîne de caractères

    Il existe de nombreuses fonctions primitives pour gérer les chaînes de caractère. Quelques exemples :

    ## [1] "Champions du monde"
    ## [1] "Championsdumonde"

    Si vous souhaitez réaliser des traitements complexes sur des chaînes de caractère, vous pouvez utilisez la librairie de référence stringr vous permettra de réaliser toutes les opérations les plus complexes. Quelques exemples :

    Il est possible de combiner l’utilisation des expressions régulières avec toutes ces fonctions.

    Les expressions régulières, ou plus communément regex (contraction de regular expression) permettent de représenter des modèles de chaînes de caractère. Ce sont des outils très puissants et très utilisés : on peut les retrouver dans de nombreux langages comme le PHP, MySQL, Javascript… Si cet outil est très puissant, il est relativement difficile à appréhender au début car les expressions régulières peuvent prendre des formes complexe à interpreter. Ex :

    ## [1] 1 4 5


    2.13 Répresentations graphiques

    Réaliser des graphiques en utilisant des fonctions primitives :

    Toute une série d’arguments permet d’ajuster les représentations, ex :
    axes : Afficher ou non les axes (TRUE ou FALSE)
    log : Mettre les axes à l’echelle logarithmique (“x”, “y”, “xy”)
    type : Argument qui contrôle le type d’axe produit (“p”= points, “l” = ligne, “o” = point relier par ligne…)

    Plusieurs éléments peuvent être superposés aux graphiques (en utilisant l’argument add =TRUE), ex :
    text() : Ajouter du texte
    legend() : Ajouter un légende
    abline() : Ajouter une ligne
    axis() : Ajouter un axe

    Il est possible d’afficher plusieurs graphiques en même temps, à l’aide des fonctions par() ou layout(). Ex :

    Pour réaliser des graphiques plus spécifiques (et plus beau !), utilisez la librarie de référence ggplot2. Ex :


    2.14 Sauvegarder et supprimer des objets

    Il est possible de supprimer tous les objets crées en cliquant sur l’icône dans la fenêtre de l’espace de travail. Plusieurs fonction permettent également de gérer les objets. En voici quelques-unes :

    Exemple pratique :


    2.14.1 Bonus

    1. Installez le package Rcade développé par Romain Lesur.

    Ce package se trouve-t-il sur le CRAN ? Où se trouve-t-il et pourquoi ?

    1. Installez le package

    Essayer-le… pas plus de 2-3 minutes :-) )

    1. Supprimez le package


    3 Statistique univariée


    3.1 Vocabulaire

    Statistique descriptive

    Tout nombre, calculé à propos d’une population et qui contribue à décrire un aspect de cette population, est une statistique. Fréquences, médianes, quartiles, déciles, moyennes, variances, etc. sont des statistiques.
    La statistique descriptive regroupe l’ensemble des techniques pour décrire numériquement une distribution.


    Population (p) et Individu (i)

    Une population est un ensemble d’individus (ou unités statistiques) sur lesquels porte l’étude statistique.


    Effectif (N ou n)

    Nombre d’individus d’une population(N) ou d’une partie quelconque de cette population(n).

    \[N=\sum_{} i\]


    Variable (x) ou caractère

    Une variable est une information dont on recueille (ou observe ou mesure) la valeur sur chaque individu. On parle de variable parce que la valeur de l’information n’est pas la même d’un individu à l’autre. Une variable est quantitative (valeur numérique) ou qualitative :

    Une variable est quantitative si elle est mesurable. Ex : Un temps.

    Elle est discrète si elle ne prend que des valeurs isolées. Ex : un âge.
    Elle est continue si elle peut prendre toutes les valeurs comprises entre 2 nombres. Ex : une distance.

    Si une variable n’est pas mesurable, elle est dite qualitative. Ex: Une couleur.

    Elle est ordinale si on peut comparer/trier les modalités entre elles. Ex : Une appréciation.
    Elle est binaire si elle n’est composé que de deux modalités. Ex : oui/non.
    Elle est dite nominale dans les autres cas. Ex : Une forme.

    Il faut bien distinguer la nature de la variable de son format de stockage (classe de donnée), numérique ou alphanumérique. Une variable qualitative peut aussi bien être codée avec des caractères alphanumériques qu’avec des caractères numériques (Ex : “Homme” ou 0 / “Femme” ou 1). Une variable quantitative peut être codée avec des caractères numériques aussi bien qu’avec des caractères alphanumériques : (Ex : “dix sept” ou 17 ).


    Distribution

    La distribution des individus selon une (ou deux) variables, est la répartition de l’effectif(n) des individus(i) par valeur ou classe de valeur.



    Figure : Les différents éléments d’une population


    Fréquence (f) ou proportion

    Rapport entre un effectif(n) particulier d’individus et l’effectif total(N).

    \[f(n)=\frac{n}{N}\]


    Moyenne

    Valeur uniforme que devrait présenter chaque individu d’un ensemble (population ou échantillon) pour que le total de l’ensemble soit inchangé.

    \[\bar{x}=\frac{\sum{xi}}{N}\]


    Mode

    le mode (ou valeur dominante) est la valeur la plus représentée d’une variable quelconque dans une population donnée. Une répartition peut être unimodale ou plurimodale (bimodale, trimodale…) si deux ou plusieurs valeurs de la variable considérée émergent également. Une distribution sans aucun mode est appelée distribution uniforme.


    Médiane, quartiles, déciles et centiles

    Ces valeurs correspondent respectivement à une proportion de l’effectif des individus rangés par valeurs croissantes.
    Médiane : valeur qui divise la série statistique en deux (50 %)
    Quartiles : valeurs qui divisent la série statistique en quatre (Q1=25%, Q2=50%, Q3=75%)
    Décile : valeurs qui divisent la série statistique en dix (10% à 90%)
    Centiles : valeurs qui divisent la série statistique en cent (1% à 99%)


    Intervalle interquartile

    Basé sur les quantiles, l’intervalle interquartile (Q3-Q1) est un paramètre de dispersion absolue qui correspond à l’étendue d’une distribution une fois que l’on a retiré les 25% des valeurs les plus faibles et les 25% des valeurs les plus fortes.


    Ecart absolu moyen

    Moyenne de la valeur absolue des écarts à la moyenne. Autrement dit, c’est la distance moyenne à la moyenne.


    Ecart absolu médian

    Moyenne des écarts à la médiane.


    Variance(σ2) et écart-type(σ)

    Indicateurs de la dispersion des valeurs des individus autour de la moyenne. La variance est la moyenne des carrés des écarts à la moyenne. L’écart-type est sa racine carrée. Ce sont des paramètres de dispersion.

    \[\sigma^x = \sqrt{ \frac{\sum_{i=1}^{n}(x_i - \mu)^2} {n}} \]


    Coefficient de variation

    Le coefficient de variation (CV) est le rapport de l’écart-type à la moyenne. Le coefficient de variation, également nommé écart type relatif, est une mesure de dispersion relative. Plus la valeur du coefficient de variation est élevée, plus la dispersion autour de la moyenne est grande. Il est généralement exprimé en pourcentage. Sans unité, il permet la comparaison de distributions de valeurs dont les échelles de mesure ne sont pas comparables.

    \[CV = \frac{\sigma }{\mu } \]


    Amplitude

    Longueur de l’intervalle entre la valeur minimum et maximum.


    Discrétiser une distribution

    Discretiser revient à rendre discret des valeurs continues. Cela consiste à classer les valeurs quantitatives d’une série statistique par intervalle de valeur selon des critères justifiables afin d’en améliorer la lecture.

    L’ensemble des classes (intervalles de valeurs) créé forme ainsi une partition de toutes les valeurs possibles de la variable.

    Exemple :
    Il est par exemple possible de discrétiser les valeurs d’un variable s’échalonnant de 1 à 25, en construisant les classes suivantes : [min à 5] - [6 à 10] - [11 à 15] - [16 à 20] - [21 à max]


    Normaliser une distribution

    La normalisation d’une (ou plusieurs) série(s) de données est nécessaire quand l’incompatibilité des unités de mesures entre les variables peut affecter les résultats sans apporter d’interprétations claires. Elle permet d’ajuster une série (vecteur) de valeurs suivant une fonction de transformation pour les rendre comparables avec quelques points de référence spécifiques.

    Deux exemple de normalisation :

    • Transformation en pourcentage (en ligne, en colonne ou les deux):


    • Standardisation (centrer-réduire):

    Il s’agit d’un centrage par rapport à la moyenne puis d’une réduction par rapport à l’écart-type :

    \[Y_{i} =\frac{X_{i} - \bar{x}}{\sigma^x }\]


    3.2 Résumer une variable

    Avant de résumer une ou plusieurs variables statistiques, il est important d’explorer et de visualiser les données. Cela permet de détécter les caractèristiques des données étudiées, et de les traiter correctement.

    Comment se structure la table de données ? Est-elle correctement construite et renseignée ?
    Comment sont nommées les individus et les variables ?
    Quelle est la classe de données des différentes variables (numérique, chaîne de caractère, booléenne…) ?
    Quelles sont les types des variables stockées (quantitative, qualitative…) ?


    3.2.1 La distribution

    Lorsque l’on étudie une variable, Il est important de s’intérresser à la distribution de sa série statistique. Pour cela, il est necessaire de calculer la table de fréquence, qui s’effectue différement selon le type de variable :

    3.2.1.1 Variable qualitative : fréquence des individus par modalités.

    ## 
      ## Exerce une profession               Chomeur       Etudiant, eleve 
      ##                  1049                   134                    94 
      ##              Retraite   Retire des affaires              Au foyer 
      ##                   392                    77                   171 
      ##         Autre inactif 
      ##                    83
    ## 
      ## Exerce une profession               Chomeur       Etudiant, eleve 
      ##                0.5245                0.0670                0.0470 
      ##              Retraite   Retire des affaires              Au foyer 
      ##                0.1960                0.0385                0.0855 
      ##         Autre inactif 
      ##                0.0415

    Pour une variable qualitative ordinale, il est également possible de calculer la fréquence cumulée (cf. ci dessous).


    3.2.1.2 Variable quantitative: fréquence des individus par classe.

    Pour faciliter l’interpretation de la fréquence d’une variable quantitative, il est souvent nécessaire de discrétiser la série statistique en plusieurs classes d’amplitude égale, car (en général) aucune valeur n’est identique.

    Il est trés simple de réaliser l’histogramme d’une distribution discrétisée en plusieurs classes d’amplitude égale avec la fonction hist().


    3.2.2 Les valeurs centrales

    Pour les variables quantitatives, des résumés numériques (valeurs centrales, paramètres de dispersion absolue et relative) peuvent être calculés.Le mode peut être également calculé pour les variables qualitatives ordinales et nominales, et la médianne peut être calculé pour les variables qualitatives ordinales.


    ## [1] 146.6875
    ## [1] 123
    ##    Var1 Freq
      ## 11  110    3
      ## 15  175    3
      ## 16  180    3
      ## 4    66    2
      ## 13  123    2
      ## 14  150    2
      ## 20  245    2
      ## 1    52    1
      ## 2    62    1
      ## 3    65    1
      ## 5    91    1
      ## 6    93    1
      ## 7    95    1
      ## 8    97    1
      ## 9   105    1
      ## 10  109    1
      ## 12  113    1
      ## 17  205    1
      ## 18  215    1
      ## 19  230    1
      ## 21  264    1
      ## 22  335    1


    3.2.3 Les paramètres de dispersions absolue

    Les paramètres de dispersion absolue se calculent uniquement sur les variables quantitatives.

    ## [1] 52
    ## [1] 335
    ## [1] 283
    ##    0%   25%   50%   75%  100% 
      ##  52.0  96.5 123.0 180.0 335.0
    ##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      ##    52.0    96.5   123.0   146.7   180.0   335.0
    ## 3rd Qu. 
      ##    83.5
    ## [1] 4700.867
    ## [1] 68.56287
    ## [1] 46.74077


    3.3 Discrétiser une variable

    Pour réaliser une discétisation correcte, il est necéssaire de définir la forme de la distribution à discrétiser.
    Ci-dessous, quelques formes classiques de distribution statistique :



    En fonction du profil d’une distribution, on utilise différentes méthodes de discrétisation :

    Amplitude égale

    Toutes les classes ont la même amplitude.

    A privilégier pour les distributions uniformes ou symétriques.

    Discrétisation standardisée

    Les classes sont déterminées selon une fraction d’écart-type par rapport à la moyenne.

    A privilégier pour les distributions symétriques.

    Par seuil observé

    Les bornes sont crées par observation de la distribution, de manière manuelle.

    A privilégier pour les distributions dissymétriques et/ou bimodales.

    Effectifs égaux (quantiles)

    Les bornes sont construites en réalisant des classes d’effectifs égaux.

    A privilégier pour les distributions dissymétriques et/ou bimodales.

    Q6

    Variante de la discrétisation selon les quantiles avec isolement des classes extrêmes de la série.

    A privilégier pour les distributions dissymétriques et/ou bimodales.

    Fisher-Jenks

    Les classes construites maximisent la variance inter-classe et minimisent la variance intra-classe.

    A privilégier pour les distributions dissymétriques et/ou bimodales.

    Progression géométrique

    Les classes sont découpées selon une progression géométrique.

    A privilégier pour les distributions dissymétriques.

    Progression arithmétique

    Les classes sont établies selon une progression arithmétique.

    A privilégier pour les distributions dissymétriques.


    Le choix d’un méthode de discrétisation et du nombre de classes à un impact trés important sur l’interprétation de sa représentation visuelle. Cette application, proposée par Laurent Jégou (2017) en est une belle demonstration.


    Exemple pratique de discrétisation d’une variable :


    Pour discrétiser les valeurs de cette série statistique, utilisez la fonction getBreaks() du package cartography :

    ## [1] 10.51248 14.71700 15.71208 16.93112 17.95490 18.78466 20.70616

    ## 
      ## [10.5,14.7] (14.7,15.7] (15.7,16.9]   (16.9,18]   (18,18.8] (18.8,20.7] 
      ##           6           6           5           6           5           6


    3.4 Représentation graphique


    1. L’histogramme


    1. La boite à moustaches (boxplot) :



    1. La carte

    En fonction de la nature des variables à représenter, on ne doit pas utiliser les mêmes méthodes de représentation. Cependant, pour réaliser toute sortes de cartes statistiques, vous pouvez n’utiliser qu’un seul package : ‘cartography


    Source : https://www.rdocumentation.org/packages/cartography/versions/2.1.1



    3.5 > Exercice

    1. Créez un projet (ou réutilisez le projet créé durant l’exercice 1).

    2. Charger de nouveau le fichier INSEE_COM_972.csv, stocké dans le repertoire de votre projet.

    3. Séléctionnez uniquement ces variables et créez un nouveau data frame.

    Code insee de la commune (CODGEO)
    Nom de la commune (LIBGEO)
    Libellé aire urbaine (LIBAU2010)
    Catégorie commune dans aire urbaine (CATAEU2010)
    Population total en 2016 (P16_POP)
    Nombre de personnes de 15 ans et plus en 2016 (C16_POP15P)
    Nombre d’agriculteurs et exploitants de 15 ans et plus (C16_POP15P_CS1)
    Nombre de retraités de 15 ans et plus (C16_POP15P_CS7)

    Les valeurs de ces variables sont-elles correctement stockées (Numerique ? caractère ? …)

    1. Créez une nouvelle variable avec la part de la population d’agriculteurs et exploitants dans la population active. Nommée cette nouvelle variable : TX_CS1_2016

    Quel est le taux minimum ?
    Quel est le taux maximum ?
    Quel est l’amplitude de la variable ?
    Quelle est la moyenne ? Quelle indicateur divise la série statistique en deux ? Quelle est sa valeur ?
    Quel est son écart-type, son intervalle interquartile ?

    Comment résumer la distribution de cette variable par un graphique ? (plusieurs solutions sont possibles)

    1. Discrétisez la variable TX_CS1_2016


    1. Créez une variable qualitative à partir des valeurs de la variable TX_CS1_2016


    1. Joingnez le tableau à la couche géographique de la Martinique.


    1. Cartographiez la part d’agriculteurs et exploitant dans la population active.



    4 Statistique bivariée


    4.1 Vocabulaire

    Statistique bivariée

    C’est l’étude des relations entre deux variables, quantitatives et/ou qualitatives. Les analyses bivariées consistent ainsi à étudier des variables prises en couple, via des techniques descriptives ou probabilistes. L’objectif est de mettre en évidence un lien ou une absence de lien entre 2 variables, et d’étudier ce lien (sens, intensité) lorsqu’il existe.

    L’analyse d’une relation bivariée avec deux types de variables possibles se résume à trois cas :

    1- Relation entre deux variables qualitatives (3.2)
    2- Relation entre une variable qualitative et une variable quantitative (3.3)
    3- Relation entre deux variables quantitatives (3.4)


    Test statistique

    Un test statistique est une procédure de décision entre deux hypothèses. Il s’agit d’une démarche consistant à rejeter ou à ne pas rejeter une hypothèse statistique, appelée hypothèse nulle, en fonction d’un jeu de données (échantillon).


    Corrélation

    Mesure du lien d’association entre des phénomènes (variables) décrits par des séries statistiques. Le calcul d’une corrélation entre deux variables permet de savoir si elles sont liées.


    Tableau de contigence (tableau croisé)

    Pour déterminer s’il existe une relation entre deux variables étudiés, on construit un tableau de contingence.Les valeurs du tableau correspondent aux effectifs de population selon les modalités des deux variables. Ex :

    La construction d’un tableau de contingence est la première étape nécessaire pour évaluer la dépendance de deux variables qualitatives


    Résidu

    Les résidus d’une regression expriment l’écart entre les valeurs observées et les valeurs prédites par le modèle. Plus un individu aura des résidus fort (positifs ou négatif), moins sa position sera expliquée par le modèle. Il faudra alors trouver d’autres facteurs explicatifs.


    4.2 Deux variables qualitatives

    Un couple de variables qualitatives se décrit par ses fréquences conjointes dans un tableau tris croisés . Les fréquences obtenues peuvent être calculées par rapport à l’effectif total ou par rapport aux effectifs marginaux (effectif en ligne et colonne). Il s’agit de l’une des analyses les plus fréquentes lors du traitement d’enquêtes en sciences sociales.

    4.2.1 Tableaux croisés

    La manière la plus simple d’obtenir un tableau croisé est d’utiliser la fonction **table().

    ##   id age  sexe                                              nivetud    poids
      ## 1  1  28 Femme Enseignement superieur y compris technique superieur 2634.398
      ## 2  2  23 Femme                                                 <NA> 9738.396
      ## 3  3  59 Homme                    Derniere annee d'etudes primaires 3994.102
      ##                   occup     qualif freres.soeurs clso
      ## 1 Exerce une profession    Employe             8  Oui
      ## 2       Etudiant, eleve       <NA>             2  Oui
      ## 3 Exerce une profession Technicien             2  Non
      ##                         relig                     trav.imp    trav.satisf
      ## 1 Ni croyance ni appartenance                Peu important Insatisfaction
      ## 2 Ni croyance ni appartenance                         <NA>           <NA>
      ## 3 Ni croyance ni appartenance Aussi important que le reste      Equilibre
      ##   hard.rock lecture.bd peche.chasse cuisine bricol cinema sport heures.tv
      ## 1       Non        Non          Non     Oui    Non    Non   Non         0
      ## 2       Non        Non          Non     Non    Non    Oui   Oui         1
      ## 3       Non        Non          Non     Non    Non    Non   Oui         0
    ##      
      ##       Ouvrier specialise Ouvrier qualifie Technicien Profession intermediaire
      ##   Non                166              215         44                       83
      ##   Oui                 37               77         42                       77
      ##      
      ##       Cadre Employe Autre
      ##   Non   117     401    38
      ##   Oui   143     193    20


    Il est cependant difficile de comparer à partir des effectifs. Le package questionr()** fournit des fonctions permettant de calculer facilement les pourcentages lignes, colonnes et totaux d’un tableau croisé. Les pourcentages en lignes ou en colonne s’obtiennent avec les fonctions lprop()** et cprop(). Celles-ci s’appliquent au tableau croisé généré par table() :

    ##           
      ##            Non   Oui   Total
      ##   Non       59.4  40.6 100.0
      ##   Oui       49.8  50.2 100.0
      ##   Ensemble  56.0  44.0 100.0
    ##        
      ##         Non   Oui   Ensemble
      ##   Non    67.8  58.8  63.8   
      ##   Oui    32.2  41.2  36.1   
      ##   Total 100.0 100.0 100.0

    Les pourcentages totaux s’obtiennent avec la fonction prop()

    ##        
      ##         Non     Oui     Total  
      ##   Non    37.95%  25.90%  63.85%
      ##   Oui    18.00%  18.15%  36.15%
      ##   Total  55.95%  44.05% 100.00%


    4.2.2 Le khi2 et la mesure des écarts à l’indépendance

    A partir d’un tableau croisée, on peut tester l’existence d’un lien entre les modalités de deux variables avec le test du Khi-2 :

    Cela consiste à comparer la répartition observée à une répartition théorique sous hypothèse d’indépendance, c’est-à-dire la répartition qu’on observerait s’il n’y avait aucun lien entre les deux variables. Cette répartition théorique consiste donc à redistribuer les effectifs conjoints tout en conservant les effectifs marginaux.

    Le test du khi-2 permet d’établir à quel seuil de probabilité on peut rejeter l’hypothèse d’indépendance entre des effectifs observés et des effectifs théoriques. Plus le khi-2 est proche de zéro, plus le tableau des effectifs théoriques et celui des effectifs observées se confondent.

    Un test de khi-2 s’applique uniquement sur des tableaux de contingence :
    - ayant au moins 2 lignes et 2 colonnes
    - contenant des valeurs positives entières
    - ayant au minimum 5 observations par cases du tableau et/ou dans le tableau des effectifs théoriques.

    Lorsque toutes les cases du tableau n’ont pas plus de 5 observations par cases, il est conseillé d’effectuer des regroupement de modalités lorsque c’est possible.


    L’objet créé par la fonction chisq.test() est une liste qui contient tous les éléments nécessaires à l’analyse du khi-2 : effectifs théoriques, résidus bruts ou résidus relatifs :

    ## 
      ##  Pearson's Chi-squared test
      ## 
      ## data:  tab
      ## X-squared = 100.27, df = 6, p-value < 2.2e-16

    Le test nous donne la statistique du χ2(chi-squared), le degré de liberté associé au test (le produit du nombre de modalités) et la significativité de la relation (valeur p).

    La probabilité d’obtenir une valeur du Khi-2 observée aussi élevée dans un échantillon de la taille observée sous l’hypothèse d’indépendance des deux variables est inférieure à 0.001%. Il est donc possible de rejeter l’hypothèse d’indépendance. Il semble bien exister une relation entre la csp et la pratique du sport.

    ##      
      ##       Ouvrier specialise Ouvrier qualifie Technicien Profession intermediaire
      ##   Non                166              215         44                       83
      ##   Oui                 37               77         42                       77
      ##      
      ##       Cadre Employe Autre
      ##   Non   117     401    38
      ##   Oui   143     193    20
    ##      
      ##       Ouvrier specialise Ouvrier qualifie Technicien Profession intermediaire
      ##   Non          130.66667          187.954   55.35632                102.98851
      ##   Oui           72.33333          104.046   30.64368                 57.01149
      ##      
      ##           Cadre  Employe    Autre
      ##   Non 167.35632 382.3448 37.33333
      ##   Oui  92.64368 211.6552 20.66667
    ##      
      ##       Ouvrier specialise Ouvrier qualifie Technicien Profession intermediaire
      ##   Non          3.0910228        1.9727718 -1.5263498               -1.9696359
      ##   Oui         -4.1544675       -2.6514902  2.0514798                2.6472754
      ##      
      ##            Cadre    Employe      Autre
      ##   Non -3.8925387  0.9540511  0.1091089
      ##   Oui  5.2317394 -1.2822858 -0.1466471


    Il est possible d’affiner l’interprétation du test en déterminant dans quelle case l’écart à l’indépendance est le plus significatif en utilisant les résidus du test. Ceux-ci sont notamment affichables avec la fonction chisq.residuals() de la librairie ‘questionr’ :

    ##      
      ##       Ouvrier specialise Ouvrier qualifie Technicien Profession intermediaire
      ##   Non               3.09             1.97      -1.53                    -1.97
      ##   Oui              -4.15            -2.65       2.05                     2.65
      ##      
      ##       Cadre Employe Autre
      ##   Non -3.89    0.95  0.11
      ##   Oui  5.23   -1.28 -0.15


    4.2.3 Représentations graphiques


    La fonction mosaicplot() permet représentation graphique du tableau de contingence assez efficace : la longueur des segments sur les deux axes correspond aux fréquences relatives correspondantes et l’aire des rectangles est également proportionnelle à la fréquence relative de la sous-population représentée. La couleur de la case correspond au résidu du test du χ² : les cases en rouge sont sous-représentées, les cases en bleu sur-représentées, et les cases blanches sont statistiquement proches de l’hypothèse d’indépendance.


    4.3 > Exercice

    Dans le le tableau ci-dessous figurent en colonnes le nombre de réponses à la question “Faites-vous faire des recherches sur internet à vos élèves ?” posée à 179 enseignants de collèges en France :


    1. Construire le data.frame dans R.

    2. Convertir les valeurs en pourcentage par ligne, colonne et total

    Attention, vous devez dans un premier temps convertir votre data.frame en matrix…
    Vous pouvez également essayer de représenter graphiquement vos pourcentages à l’aide de la fonction barplot().

    1. Existe-t-il un lien statistique entre ces deux variables?


    4.4 Qualitatif vs Quantitatif

    4.4.1 Représentations graphiques

    Dans un premier temps, il s’agit de résumer visuellement la distribution statistique d’une variable quantitative autour de différentes mesures de centralité et de dispersion. La boîte à moustache boxplot() montre la distribution de la variable quantitative pour chacune des modalités de la variable qualitative.


    Si une variable qualitative ne présente que deux modalités, la representation côte à côte des deux distributions permet d’observer facilement leurs différences :


    4.4.2 Calculs d’indicateurs

    On peut vouloir comparer certains indicateurs (moyenne, médiane) d’une variable quantitative selon les modalités d’une variable qualitative.

    Pour cela, il suffit de ventiler notre population en autant de sous-populations qu’il y a de modalités dans la variable qualitative. Vous pouvez par exemple utiliser la fonction filter() du package dplyr :

    ## [1] 40.92531
    ## [1] 52.25137

    Plus simplement, vous pouvez utiliser la fonction tapply(), qui prend en paramètre une variable quantitative, qualitative et une fonction, puis applique automatiquement la fonction aux valeurs de la variables quantitative pour chaque niveau de la variable qualitative. Ex :

    ##      Non      Oui 
      ## 52.25137 40.92531


    4.5 Deux variables quantitatives

    4.5.1 Représentation graphique

    Lorsque l’on croise deux variables quantitatives, l’idéal est de faire une représentation graphique sous forme de nuage de points. Cela permet de visualiser l’existence d’un lien entre les deux variables et de ne pas faire d’erreurs d’interprétation.


    Figure : Différentes séries statistiques… aux paramètres identiques


    Source : http://blog.revolutionanalytics.com/2017/05/the-datasaurus-dozen.html


    Le jeu de données hdv2003 comportant assez peu de variables quantitatives, on va s’intéresser maintenant à un jeu de données du recensement de la population de 2012 (rp2012) :


    Représentation du nuage de point :


    Il s’agit de la représentation la plus simple. Mais il est possible de fortement personnaliser ce graphique :


    Les différentes formes classiques de relation entre 2 variables :

    Source : https://eric.univ-lyon2.fr/~ricco/cours/cours/Analyse_de_Correlation.pdf


    4.5.2 Calcul d’indicateurs

    En plus d’une représentation graphique, on peut calculer certains indicateurs permettant de mesurer le degré d’association de deux variables quantitatives.


    4.5.2.1 Corrélation linéaire (Pearson)

    La corrélation est une mesure du lien d’association linéaire entre deux variables quantitatives. Sa valeur varie entre -1 et 1. Si la corrélation vaut -1, il s’agit d’une association linéaire négative parfaite. Si elle vaut 1, il s’agit d’une association linéaire positive parfaite. Si elle vaut 0, il n’y a aucune association linéaire entre les variables. Le calcul du coéfficient linéaire pet se fair à l’aide de la fonction cor.test().

    ## 
      ##  Pearson's product-moment correlation
      ## 
      ## data:  rp2012$cadres and rp2012$dipl_sup
      ## t = 193.1, df = 5168, p-value < 2.2e-16
      ## alternative hypothesis: true correlation is not equal to 0
      ## 95 percent confidence interval:
      ##  0.9337577 0.9403985
      ## sample estimates:
      ##       cor 
      ## 0.9371629

    Dans ce cas, le coefficient est extrêmement fort. Il y a donc un lien linéaire et positif entre les deux variables (quand la valeur de l’une augmente, la valeur de l’autre augmente également).


    4.5.2.2 Corrélation des rangs (Spearman)

    Si les deux variables ne semblent pas être corrélées de façon linéaire et que l’on est en présence d’une relation monotone (c’est à dire que les variables ont tendance à se déplacer dans la même direction relative), on peut utiliser le coefficient de corrélation des rangs de Spearman.

    Plutôt que de se baser sur les valeurs des variables, cette corrélation va se baser sur leurs rangs, c’est-à-dire sur leur position parmi les différentes valeurs prises par les variables.

    Ainsi, si la valeur la plus basse de la première variable est associée à la valeur la plus basse de la deuxième, et ainsi de suite jusqu’à la valeur la plus haute, on obtiendra une corrélation de 1. Si la valeur la plus forte de la première variable est associée à la valeur la plus faible de la seconde, et ainsi de suite, et que la valeur la plus faible de la première est associée à la plus forte de la deuxième, on obtiendra une corrélation de -1. Si les rangs sont “mélangés”, sans rapports entre eux, on obtiendra une corrélation autour de 0.

    Pour calculer une corrélation de Spearman, on utilise la fonction cor() mais avec l’argument method = “spearman” :

    ## [1] 0.9036273


    4.5.3 Régression linéaire

    Dans le cas particulier où l’on a pu mettre en évidence l’existence d’une relation linéaire significative entre deux caractères quantitatifs continus X et Y, on peut chercher à formaliser la relation moyenne qui unit ces deux variables à l’aide des équations suivantes :
    Y = aX + b = droite de régression de Y en fonction de X
    X = aY + b = droite de régression de X en fonction de Y

    La régression consiste à évaluer les paramètres d’une fonction linéaire, puis d’estimer à l’aide de cette fonction les valeurs de la variable à expliquer et à tester si les différences (= les résidus) entre valeurs mesurées et valeurs estimées s’écartent de manière significative de 0.

    ## 
      ## Call:
      ## lm(formula = rp2012$cadres ~ rp2012$dipl_sup)
      ## 
      ## Coefficients:
      ##     (Intercept)  rp2012$dipl_sup  
      ##          0.9217           1.0816

    lm() nous renvoit par défaut les coefficients de la droite de régression, où :

    Y = % de cadres X = % diplomé du supérieur

    b = ordonnée à l’origine (Intercept) vaut 0.92
    a = le coefficient associé à dipl_sup vaut 1.08

    La regression linéaire de Y en fonction de X ( Y = aX + b ) équivaut donc à Y = 1.08X + 0.92


    4.5.3.1 Coefficient de détermination (R2)

    Le coefficient de détermination (R2) est une mesure de la qualité de la prédiction d’une regression linéaire. Il donne la part de la variance expliquée par l’équation de la régression dans la variance totale du nuage de points.

    ## 
      ## Call:
      ## lm(formula = rp2012$cadres ~ rp2012$dipl_sup)
      ## 
      ## Residuals:
      ##     Min      1Q  Median      3Q     Max 
      ## -33.218  -1.606  -0.172   1.491  13.001 
      ## 
      ## Coefficients:
      ##                 Estimate Std. Error t value Pr(>|t|)    
      ## (Intercept)     0.921661   0.071814   12.83   <2e-16 ***
      ## rp2012$dipl_sup 1.081636   0.005601  193.10   <2e-16 ***
      ## ---
      ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
      ## 
      ## Residual standard error: 2.701 on 5168 degrees of freedom
      ## Multiple R-squared:  0.8783, Adjusted R-squared:  0.8783 
      ## F-statistic: 3.729e+04 on 1 and 5168 DF,  p-value: < 2.2e-16


    4.5.3.2 Représentation graphique

    On peut enfin représenter la droite de régression sur notre nuage de points à l’aide de la fonction abline() :


    4.6 > Exercice

    1. Créez un nouveau projet

    2. Décrivez le jeu de données “women”

    Le jeu de données women est un jeu de données fourni par le package datasets installé par défaut.

    Quelles sont les unités de mesure des variables?

    1. Créer deux nouvelles variables (taille et poids) dans des unités de mesures plus compréhensibles.

    Arrondir les valeurs pour une meilleur lisibilité (avec quelles fonction?).

    1. Créer un graphique mettant en relation les deux variables (poids et taille)

    2. Quelle hypothèse pouvons nous faire? Et comment la vérifier?

    3. Quelle est la relation entre poids et taille.

    4. Comment modéliser cette relation

    5. Quel serait le poids d’une femme d’1.68 m?

    6. Afficher la droite de regression du modèle sur le graphique.


    5 Sources & références


    Il existe de trés nombreuses ressources documentaires sur R, disponible en libre accès sur le web. Plusieurs ressources de qualité, parfois largement utilisées pour produire ce document, sont référencées sur le site de partage et de diffusion Rzine (onglet ressources) :

    rzine.fr

    COMITÉ ÉDITORIAL RZINE, 2021a. Processus de relecture d’une fiche [en ligne]. S.l. : Rzine. Disponible à l'adresse : https://rzine.gitpages.huma-num.fr/help_rzine_reviewing/.

    COMITÉ ÉDITORIAL RZINE, 2021b. Processus de soumission d’une fiche [en ligne]. S.l. : Rzine. Disponible à l'adresse : https://rzine.gitpages.huma-num.fr/help_rzine_submit/.

    COMITÉ ÉDITORIAL RZINE, 2021c. Rédiger une fiche [en ligne]. S.l. : Rzine. Disponible à l'adresse : https://rzine.gitpages.huma-num.fr/Help_Rzine_Layout/.



    licensebuttons by-sa